﻿using System;

namespace Simp.CodeModel.CoreFunctions
{
	/// <summary>Represents a numeric function, something representing a number.</summary>
	public interface INumericFunction
	{
		/// <summary>Returns an integer representation.  If the numeric isn't an integer, it returns <c>null</c>.</summary>
		/// <returns></returns>
		IntegerFunction GetInteger();

		/// <summary>Returns a rational representaiton.  If the numeric isn't an integer rational, it returns <c>null</c>.</summary>
		/// <returns></returns>
		RationalFunction GetRational();

		/// <summary>Returns a real representaiton.  If the numeric isn't an real, it returns <c>null</c>.</summary>
		/// <param name="force">Can require to force an integer or a rational into a real by approximation.</param>
		/// <returns></returns>
		RealFunction GetReal(bool force);
	}
}